home *** CD-ROM | disk | FTP | other *** search
- /*
- * Copyright (C) 1994, Silicon Graphics, Inc.
- * All Rights Reserved.
- *
- * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
- * the contents of this file may not be disclosed to third parties, copied or
- * duplicated in any form, in whole or in part, without the prior written
- * permission of Silicon Graphics, Inc.
- *
- * RESTRICTED RIGHTS LEGEND:
- * Use, duplication or disclosure by the Government is subject to restrictions
- * as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
- * and Computer Software clause at DFARS 252.227-7013, and/or in similar or
- * successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
- * rights reserved under the Copyright Laws of the United States.
- */
- ///////////////////////////////////////////////////////////////////////////
- // OkTArray.c++
- ///////////////////////////////////////////////////////////////////////////
- #include "OkTArray.h"
- #include <iostream.h>
-
-
- template <class Type> void
- OkTArray<Type>::createElements(void * start, u_int numbytes)
- {
- Type *ptr = (Type *) start;
- while(numbytes) {
- numbytes -= elementsize;
- Type * obj = new(ptr) Type;
- ptr++;
- }
- }
-
-
- template <class Type> void
- OkTArray<Type>::destroyElements(void * start, u_int numbytes)
- {
- Type * ptr = (Type *)start;
- while (numbytes) {
- numbytes-=elementsize;
- // Working with Shankar Uni now....
- // This turns out to be cfront 3.0 bug.
- // ptr->Type::~Type();
- // cerr <<"ptr->destroy()\n";
- ptr->destroy();// Kludge to work around. Element must have
- // void destroy() { this->~Type(); }
- ptr++;
- }
- }
-
-
- template <class Type> void
- OkTArray<Type>::copyElements(void * src, void * dst, u_int numbytes)
- {
- if (src<dst) {
- src = (char*)src + numbytes;
- dst = (char*)dst + numbytes;
- Type * p = (Type*)src - 1;
- Type * q = (Type*)dst - 1;
- while (numbytes > 0) {
- // Type * obj = new(q--) Type(*p--);
- Type * obj = new(q--) Type;
- *obj = *p--;
- numbytes -= elementsize;
- }
- } else {
- Type * p = (Type*)src;
- Type * q = (Type*)dst;
- while (numbytes > 0) {
- // Type * obj = new(q++) Type(*p++);
- Type * obj = new(q++) Type;
- *obj = *p++;
- numbytes -= elementsize;
- }
- }
- }
-
-
-